// 导入 Joi 来定义验证规则
const Joi = require("joi");

/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */

/** 注册数据验证 */
const userReg = {
  // 2.1 校验 req.body 中的数据
  // body: {
  //   username: Joi.string().alphanum().min(2).max(10).required(),
  //   password: Joi.string()
  //     .pattern(/^[\S]{6,15}$/)
  //     .required(),
  // },
  // // 2.2 校验 req.query 中的数据
  // query: {
  //   name: Joi.string().alphanum().min(3).required(),
  //   age: Joi.number().integer().min(1).max(100).required()
  // },
  // // 2.3 校验 req.params 中的数据
  // params: {
  //   id: Joi.number().integer().min(0).required()
  // }
};

/** 更新用户信息验证 */
const updateUserInfo = {
  body: {
    id: Joi.number().integer().min(1).required(), // 要修改的用户id
    nickname: Joi.string().required().error(new Error("昵称不能为空")), // 昵称
    email: Joi.string().email().required().error(new Error("邮箱格式不正确")), // 邮箱
  },
};

/** 重置密码 */
const resetPwd = {
  body: {
    oldpwd: Joi.string()
      .pattern(/^[\S]{6,15}$/)
      .required(),
    newpwd: Joi.string()
      .pattern(/^[\S]{6,15}$/)
      .valid(Joi.ref("oldPwd"))
      .error(new Error("新旧密码请勿相同"))
      .required(),
  },
};

/** 更新头像 */
const updateUserImg = {
  body: {
    avatar: Joi.string().required(),
  },
};

module.exports = {
  userReg,
  updateUserInfo,
  resetPwd,
  updateUserImg,
};
